package br.com.massai.controller.beans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;
import javax.inject.Inject;
import javax.inject.Named;

import org.omnifaces.cdi.ViewScoped;

import br.com.massai.model.dao.ItemServicoDAO;
import br.com.massai.model.dao.UnidadeMedidaDAO;
import br.com.massai.model.entity.ItemServico;
import br.com.massai.model.entity.UnidadeMedida;
import br.com.massai.view.utils.FacesUtil;

@Named
@ViewScoped
public class ItemServicoBean implements Serializable {

	private static final long serialVersionUID = 6964300297026427189L;
	
	//PROPERTIES
	private ItemServico itemServico;
	
	//LISTS
	private List<ItemServico> listaItemServico;
	
	//CDI
	@Inject private UnidadeMedidaDAO unidadeMedidaDAO;
	@Inject private ItemServicoDAO itemServicoDAO;

	public ItemServicoBean() {
		itemServico = new ItemServico();
	}
	
	public List<SelectItem> unidadesMedida(){
		try {
			List<SelectItem> lista = new ArrayList<SelectItem>();
			List<UnidadeMedida> unidades = unidadeMedidaDAO.obterTodos();
			lista.add(new SelectItem(null, "Selecione..."));

			for(UnidadeMedida u : unidades)
				lista.add(new SelectItem(u, u.getSigla() + " - " + u.getDescricao()));

			return lista;

		} catch (Exception e) {
			FacesUtil.registrarMensagemErro(e.getMessage());
			return null;
		}
	}
	
	public void pesquisar(){
		try {
			listaItemServico = itemServicoDAO.obterPorExemplo(itemServico);
			if(listaItemServico == null || listaItemServico.isEmpty())
				FacesUtil.registrarMensagemInfo(FacesUtil.REGISTRO_NAO_ENCONTRADO);

		}catch (Exception e) {
			FacesUtil.registrarMensagemErro(e.getMessage());
		}
	}

	public void salvar(){
		try{
			itemServicoDAO.salvar(itemServico);
			itemServico = new ItemServico();
			pesquisar();

		} catch (Exception e) {
			FacesUtil.registrarMensagemErro(e.getMessage());
		}
	}
	
	public void remover(){
		try{
			itemServico = itemServicoDAO.obterPorId(Long.parseLong(FacesUtil.obterParamRequest("id")));
			itemServicoDAO.excluir(itemServico);
			itemServico = new ItemServico();
			pesquisar();

		} catch (Exception e) {
			FacesUtil.registrarMensagemErro(e.getMessage());
		}
	}
	
	public void atualizar(){
		try{
			itemServico = itemServicoDAO.obterPorId(Long.parseLong(FacesUtil.obterParamRequest("id")));

		} catch(Exception e){
			FacesUtil.registrarMensagemErro(e.getMessage());
		}
	}

	public ItemServico getItemServico() {
		return itemServico;
	}

	public void setItemServico(ItemServico itemServico) {
		this.itemServico = itemServico;
	}

	public List<ItemServico> getListaItemServico() {
		return listaItemServico;
	}

	public void setListaItemServico(List<ItemServico> listaItemServico) {
		this.listaItemServico = listaItemServico;
	}

}
